home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 151-175 / scopedisk157 / append / append.c < prev    next >
C/C++ Source or Header  |  1995-03-19  |  2KB  |  60 lines

  1. /*
  2.  * APPEND (c)1989 Oliver Enseling eine Datei an eine andere anfügen
  3.  * Syntax: APPEND files [TO] file files darf ein AmigaDOS-Muster,
  4.  * oder eine Auflistung mehrerer Dateien sein file ist eine einzelne
  5.  * AmigaDOS-Datei
  6.  */
  7.  
  8.  
  9. #include <stdio.h>
  10. #include <fcntl.h>
  11. #include <stdlib.h>
  12. #include <string.h>
  13. #include <dos.h>
  14.  
  15. #define BUFSIZE 256
  16.  
  17. struct FILEINFO FI;
  18.  
  19. char            Buffer[BUFSIZE];
  20.  
  21. #ifdef DEUTSCH
  22. #define SYNTAX                                                               \
  23.     "Syntax: APPEND dateien | muster [dateien | muster] [...]] [TO] datei\n" \
  24.     "Version 1.00, ©1989 Oliver Enseling\n"
  25. #define NOREAD "%s kann nicht gelesen werden\n"
  26. #define NOWRITE "%s kann nicht beschrieben werden\n"
  27. #else
  28. #define SYNTAX                                                               \
  29.     "Usage: APPEND files | pattern [files | pattern] [...]] [TO] file\n"     \
  30.     "Version 1.00, ©1989 Oliver Enseling\n"
  31. #define NOREAD "read error %s\n"
  32. #define NOWRITE "write error %s\n"
  33. #endif
  34.  
  35. void
  36. main(argc, argv)
  37.     int             argc;
  38.     char          **argv;
  39. {
  40.   if (argc < 3)
  41.     printf(SYNTAX);
  42.   else {
  43.     int             src, dest, count, i, maxi = stricmp(argv[argc - 2], "TO") == 0 ? argc - 2 : argc - 1;
  44.  
  45.     if ((dest = open(argv[argc - 1], O_APPEND | O_WRONLY | O_CREAT)) >= 0) {
  46.       for (i = 1; i < maxi; i++)
  47.         if ((src = open(argv[i], O_RDONLY)) >= 0) {
  48.           do {
  49.             count = read(src, Buffer, BUFSIZE);
  50.             write(dest, Buffer, count);
  51.           } while (count > 0);
  52.           close(src);
  53.         } else
  54.           printf(NOREAD, argv[i]);
  55.       close(dest);
  56.     } else
  57.       printf(NOWRITE, argv[argc - 1]);
  58.   }
  59. }
  60.